草庐IT

C++ ifstream 到 char *

全部标签

c++ - 将 char 转换为算术运算符

我有一个字符代表运算符,一共有四个运算符(+-*/)。我是怎么做到的:intCompute(charc,inta,intb){if(c=='+')returna+b;elseif(c=='-')returna-b;elseif(c=='*')returna*b;else(c=='/')returna/b;}有没有更方便的方法来做到这一点? 最佳答案 您可以使用switch语句:intCompute(charc,inta,intb){switch(c){case'+':returna+b;case'-':returna-b;case'

c++ - 对`i2c_smbus_read_word_data(int, unsigned char) 的 undefined reference

更新到Ubuntu18.04后,我无法编译我的Qt应用程序。出现以下错误:undefinedreferenceto`i2c_smbus_read_word_data(int,unsignedchar)据我了解,i2c_smbus_read_word_data现在不在linux/i2c-dev.h中定义,而是在动态库/usr/lib/x86_64-linux-gnu/libi2c.so中定义。我尝试动态链接:-li2c静态的:/usr/lib/x86_64-linux-gnu/libi2c.a但是还是有编译错误更新:已安装libi2c-dev、libi2c0和i2c-tools包。

c++ - 为什么我可以将一个大于 127 的 int 传递给一个 char 数组,而不是直接传递?

我知道char值不能表示为176,但一些字节系统是无符号的(0-255),而其他字节系统是有符号的(-128到127)。在这种情况下,我使用的是无符号的,所以我只想创建一个简单的字节消息数组,但是当我尝试放置一个高于127的值时出现此错误,但是如果我先将其声明为int,它会避免该错误.有人可以详细解释为什么这有效吗?方法1:不起作用。我收到此错误:缩小从“int”到“char”的“176”的转换charm1[3]{176,118,1};方法2:这个可行intb1=176;charm1[3]{b1,118,1}; 最佳答案 当使用大括

c++ - 模板变量作为字符串而不是 const char *

我喜欢vector,并且通常在数组上使用它们。出于这个原因,我创建了一个模板化的可变参数函数来初始化vector(包括在下面)。标题(.h):templatevectorinitVector(constintargCount,Tfirst,...);来源(.hpp):templatevectorinitVector(constintargCount,Tfirst,...){vectorretVec;retVec.resize(argCount);if(argCount它适用于大多数类型(例如int、double...),但不适用于字符串——因为编译器将它们解释为“constchar*”

c++ - 取消引用 char 指针会随着它指向的字符串变长而变慢。为什么?

我遇到了一个奇怪的问题:我有以下代码:intmatches=0;for(intstr_id=0;str_id它使用test()函数比较成对的以null结尾的字符串。strings1和strings2是包含STR_COUNT个相同长度的空终止字符串的vector。根据test()是否取消引用其参数,此代码段会根据strings1和中字符串的长度以恒定时间或线性时间执行字符串2。也就是说,如果我使用:inttest(char*a,char*b){return(a!=b)}那么运行时间不依赖于strings1和strings2中存储的字符串的长度。另一方面,如果我使用inttest(char

c++ - 如何从字符串文字初始化 unsigned char 数组?

我有一个带有unsignedchar[16]字段的结构,我想将其初始化为零。以下(高度简化的)代码可以使用clang(OSX)进行良好编译:structGUID{unsignedcharbytes[16];GUID():bytes("\0\0\0\0""\0\0\0\0""\0\0\0\0""\0\0\0"){};}请注意,我使用15个\0,因为第16个是字符串文字的零终止符,如果您用太多字节初始化字符串,clang会报错。现在,当我尝试使用GCC4.5.3(cygwin)进行编译时,我得到:error:incompatibletypesinassignmentof'constchar

c# - 导出托管 C# 函数以将更改的 char* 参数返回到非托管代码

我有一个nativeC++(我认为)应用程序,可以将其配置为加载某个dll并调用一个函数。此函数返回int,接受四个参数,应至少更改两个参数中的一个并返回一个值。根据手册,此函数应在C++中定义为:__declspec(dllexport)intfuncName(constchar*par1,constchar*par2,char*par3,char*par4);但是,根据需求,这个功能应该用C#实现。我正在使用UnmanagedExports以允许我使用:[DllExport("funcName",CallingConvention.Cdecl)]publicstaticunsafe

c++ - 使用 memcpy 将结构转换为 char 数组

我正在尝试将以下结构转换为字符数组,以便我可以通过串口发送它。structfoo{uint16_tvoltage;charID;charTempByte;charRTCday[2];charRTCmonth[2];charRTCyear[2];charRTChour[2];charRTCmin[2];charSepbyte;}dvar={500,'X','>',"18","10","15","20","15",'#'};然后我使用以下方法将其转换为字符数组:charb[sizeof(structfoo)];memcpy(b,&dvar,sizeof(structfoo));但是由于某种

c++ - 如何将 v8::String 转换为 const char *

我在dll中有这个函数staticCOMMANDERDLL_APIintInsertCodeBar(constchar*pszBuffer);在我的Node插件中我有这个功能voidInsertCodeBarWrapper(constFunctionCallbackInfo&args){Isolate*isolate=args.GetIsolate();Localcb=Local::Cast(args[1]);Localbar=args[0]->ToString();constunsignedargc=1;Localargv[argc]={CSGPCommander::InsertCo

c++ - static constexpr char m_pszFoo[] = "***FOO***"有编译错误表达式没有计算常量

错误代码为C2131。即使我在其他文件中调用此变量的大小时,intelisense也不会提示,intelisense知道大小。我缺少什么才能使它正常工作?任何帮助是极大的赞赏。在下图中,可以看到智能感知没有提示并且还确定了大小。示例a.h:classa{private:staticconstexprcharm_pszFoo[]="***FOO***";//compileerroronthislineC2131expressiondidnotevaluatetoaconstantpublic:a(){sizeof(m_pszFoo);};//nocompileerrorhere};要重现